package pzl.com.canvasapi.views;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Picture;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

/**
 * @author zl.peng
 * @version [1.0, 2016-11-23]
 *          drawPicture(矢量图) 和 drawBitmap(位图)
 *          使用Picture前请关闭硬件加速，以免引起不必要的问题
 *          Picture和上文中的录像功能是类似的，只不过我们Picture录的是Canvas中绘制的内容
 *          把Canvas绘制点，线，矩形等诸多操作用Picture录制下来，下次需要的时候拿来就能用，
 *          使用Picture相比于再次调用绘图API，开销是比较小的，也就是说对于重复的操作可以更加省时省力
 */
public class V_Picture extends View {
    private Picture mPicture = new Picture();

    public V_Picture(Context context) {
        super(context);
    }

    public V_Picture(Context context, AttributeSet attrs) {
        super(context, attrs);
        setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        recording();
    }

    public V_Picture(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawPicture(mPicture, new RectF(0, 0, mPicture.getWidth(), 200));
    }


    // 2.录制内容方法
    private void recording() {
        // 开始录制 (接收返回值Canvas)
        Canvas canvas = mPicture.beginRecording(500, 500);
        // 创建一个画笔
        Paint paint = new Paint();
        paint.setColor(Color.BLUE);
        paint.setStyle(Paint.Style.FILL);

        canvas.drawColor(Color.CYAN);
        // 在Canvas中具体操作
        // 位移
        canvas.translate(250, 250);
        // 绘制一个圆
        canvas.drawCircle(0, 0, 100, paint);


        mPicture.endRecording();
    }

}
